package com.example.test.annotation;


import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;


/**
 * 第一个泛型是我们自定义验证注解的名称
 * 第二个泛型是验证字段的类型
 */
public class MyConstraintValidator implements ConstraintValidator<TestBlankConstraint, String> {
    /**
     * 初始化做的一些工作
     *
     * @param constraintAnnotation
     */
    @Override
    public void initialize(TestBlankConstraint constraintAnnotation) {
        System.out.println("My 自定义校验注解 init");
    }

    /**
     * 校验逻辑
     *
     * @param value   传进来需要校验的值
     * @param context 校验上下文
     * @return
     */
    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if (value != null && value.contains(" ")) {
            //获取默认提示信息
            String defaultConstraintMessageTemplate = context.getDefaultConstraintMessageTemplate();
            System.out.println("default message :" + defaultConstraintMessageTemplate);
            //禁用默认提示信息
            context.disableDefaultConstraintViolation();
            //设置提示语
            context.buildConstraintViolationWithTemplate("can not contains blank").addConstraintViolation();
            return false;
        }
        return true;
    }
}
